package com.wdc.deliveryrobot.utils;


import android.os.Handler;
import android.os.Looper;
import android.util.Log;

import com.wdc.deliveryrobot.activity.BaseActivity;

/**
 * @Author: tianHuiDa
 * @Date: 2024/11/14
 * @Description: 循环任务
 */
public class TimerTaskManager {
    // 唯一实例
    private static TimerTaskManager instance;

    // Handler 和其他必要的字段
    private Handler handler;
    private boolean isRunning;
    private Runnable runnable;
    private BaseActivity baseActivity;

    // 私有构造函数，防止外部实例化
    private TimerTaskManager(BaseActivity baseActivity) {
        this.baseActivity = baseActivity;
        this.handler = new Handler(Looper.getMainLooper());  // 使用主线程的 Looper
        this.isRunning = false;
    }

    // 获取单例实例的方法
    public static TimerTaskManager getInstance(BaseActivity baseActivity) {
        if (instance == null) {
            synchronized (TimerTaskManager.class) {
                if (instance == null) {
                    instance = new TimerTaskManager(baseActivity);
                }
            }
        }
        return instance;
    }

    // 启动定时器
    public void startTimer() {
        if (!isRunning) {
            isRunning = true;

            // 创建一个每秒调用一次的 Runnable
            runnable = new Runnable() {
                @Override
                public void run() {
                    // 执行任务，比如访问 BaseActivity 中的数据
                    callSomeMethod();

                    // 延迟1秒后继续执行
                    if (isRunning) {
                        handler.postDelayed(this, 1000);  // 每隔1秒重复执行
                    }
                }
            };

            // 首次启动定时器
            handler.postDelayed(runnable, 1000);
        }
    }

    // 停止定时器
    public void stopTimer() {
        isRunning = false;
        if (runnable != null) {
            handler.removeCallbacks(runnable);  // 移除定时任务
        }
    }

    // 每秒调用的方法，这里访问 BaseActivity 的数据
    private void callSomeMethod() {
        if (baseActivity != null) {
            // 获取 BaseActivity 中的数据
            baseActivity.selfChassisState.getAllMaps();
            baseActivity.selfChassisState.getSite();
            baseActivity.selfChassisState.readConfiguration();
        }
    }

    // 清除单例引用，避免内存泄漏
    public void clearInstance() {
        instance = null;
    }
}
